import axios from "axios";
import { ElMessage } from 'element-plus'
import { useTokenStore } from "@/store/token";



const instance = axios.create({
    baseURL: 'http://localhost:8081/taoxi',
    // withCredentials: true,
    headers: {
        // 'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*'
    }
});

//添加请求拦截器
instance.interceptors.request.use(
    (config) => {
        const tokenStore = useTokenStore();
        if (tokenStore.token) {
            // 使用 encodeURIComponent 来处理可能包含特殊字符的 token
            config.headers.Authorization = `${encodeURIComponent(tokenStore.token)}`;
        }
        // 打印请求头以进行调试
        // console.log('Request headers:', config.headers);
        return config;
    },
    (err) => Promise.reject(err)
);


import router from "@/router";
//添加响应拦截器
instance.interceptors.response.use(
    result => {
        if (result.data.code === 0) {
            return result.data;
        }
        // ElMessage.error(result.data.msg || '登录失败');
        return Promise.reject(result.data);
    },
    err => {
        // 添加错误日志


        if (err.response) {
            // 服务器响应了，但状态码不在 2xx 范围内
            switch (err.response.status) {
                case 401:
                    ElMessage.error('请先登录');
                    router.push('/login');
                    break;
                case 403:
                    ElMessage.error('没有权限');
                    break;
                case 404:
                    ElMessage.error('请求的资源不存在');
                    break;
                default:
                    ElMessage.error(err.response.data?.msg || '服务器错误');
            }
        } else if (err.request) {
            // 请求已经发出，但没有收到响应
            ElMessage.error('网络错误，请检查您的网络连接');
        } else {
            // 在设置请求时发生了一些事情，触发了错误
            ElMessage.error('请求配置错误');
        }

        return Promise.reject(err);
    }
);

export default instance;